import pandas as pd

df = pd.read_csv('/home/ubuntu/0000/b_hotSearch/data/B热搜更新记录.csv',header=None)
df.columns = ['排名', 'keyword', 'how_name', 'icon', 'uri', 'goto', '更新时间']

df_top_0 = df[ df['排名']==0 ]
top_0_list = list(set(df_top_0.keyword)) # 上过榜一的大哥们

# 我想要查榜一大哥的排名生命周期，什么时候上的榜，什么时候落了榜，目标是个字典。
# 获取关键词在榜单上的生命周期：
def get_keyword_life_in_hotbord(keyword):
    keyword = keyword
    df_keyword = df[ df['keyword']==keyword ]
    time = [x.split('.')[0] for x in  df_keyword.sort_values('更新时间')['更新时间']]
    icon = [x.split('.')[0] for x in  df_keyword.sort_values('更新时间')['icon']]
    list = [x for x in df_keyword.sort_values('更新时间')['排名']]
    return {"name":keyword,"icon": icon, "排名": list,"time": time}


# for i in top_0_list:
#     print(get_keyword_life_in_hotbord(i))

# 上位指数：在进入排行榜后，经过了几个观察周期变成了榜一？
# 上位指数越大，在榜上爬行的时间就越长，我要预测能上榜首的新热词。
def get_ShangWeiZhiShu(keyword):
    n = 0
    for i in get_keyword_life_in_hotbord(keyword)['排名']:
        if i != 0:
            n += 1
        elif i == 0:
            str = f"[{keyword}]的上位指数是:{n}"
            return str

# 发热指数：进入排行榜后，多久才会把"新"变成"热"
def get_FaReZhiShu(keyword):
    n = 0
    for i in get_keyword_life_in_hotbord(keyword)['icon']:
        if i != "热":
            n += 1
        elif i == "热":
            str = f"[{keyword}]的发热指数是:{n}"
            return str

#for i in top_0_list:
#    print(get_FaReZhiShu(i))
#    print(get_ShangWeiZhiShu(i))

# newidea 找到所有排名50的内容，跟踪其生长过程。
def 哪个榜位的大佬容易出榜一(num):
    df_top_num = df[ df['排名']==num] # 筛选榜位成员
    top_num_list = list(set(df_top_num.keyword)) # 筛选榜位关键词列表

    group_ShangWeiZhiShu_num = [] # 该榜位关键词里，谁上过榜一
    for i in top_num_list:
        group_ShangWeiZhiShu_num.append(get_ShangWeiZhiShu(i))
    def not_empty(s):
        return s and s.strip()
    该榜位的上位人 = list(filter(not_empty, group_ShangWeiZhiShu_num))
    该榜位上位人数 = len(list(filter(not_empty, group_ShangWeiZhiShu_num)))
    #print(num,该榜位上位人数,该榜位的上位人)
    return {"榜位":num,"上位人数":该榜位上位人数,"上位人":该榜位的上位人}
for i in range(50):
    print(哪个榜位的大佬容易出榜一(i))
